# Author:Xiao yang
# 时间：0930-week05

# squares = [1,4,9,16,25] 【两个列表可以相加，即左边的列表加上右边的列表】

# ******重要******
# squares.方法（）
# 1.sort：排序 按照什么样的方式排序。
# 2.pop：删除
# 3.copy：复制
# 4.count：去查找某一个值在列表中出现的次数
# 5.index：索引
# 6.append：增加
# 7.clear：清除
# 8.extend：扩展
# 9.insert：插入
# 10.remove：移除
# 11reverse：反转


# 功能的使用：列表名.功能的名字()

# 一、添加元素
# 1.append()   追加，在列表的末尾添加元素
# 特点：是在原列表的基础上操作的

list12 = [1,2,3,4,5]
print(list12)
# 追加单个元素
list12.append(6)

# 追加多个元素,不能直接追加，通过列表的形式追加，形成了一个二维列表
list12.append([7,8])
print(list12)

# 2.extend()   扩展，在列表的末尾添加元素
# list12.extend(9)   TypeError: 'int' object is not iterable
list12.extend([9,10])
print(list12)

# 注意：append可以添加单个元素，但是extend不可以
# append添加多个元素的时候，以整个列表的形式添加进去；但是，extend只添加元素
#
# 3.insert()   插入 ,在指定的索引处插入一个元素,后面的其他元素向后顺延
# insert(索引，插入的数据)
list13 = [1,2,3,4,5]
print(list13)

# 需求：在索引为2的位置插入一个数字100
list13.insert(2,100)
print(list13)

# 将整个列表作为一个整体，插入到原列表中
list13.insert(2,[7,8])
print(list13)


# 二、删除元素
# 1.pop()    弹出，移除列表中指定索引处的元素
list14 = [1,2,3,4,5]
print(list14)

# 注意1：默认移除的是最后一个元素
# 注意2：返回的是被移除的数据
result14 = list14.pop()
print(list14)  # [1, 2, 3, 4]
print(result14)   # 5

print(list14.pop(1))
print(list14)

# 2.remove()  移除   特点：移除指定元素在列表中匹配到的第一个元素【从左往右】
# remove(元素值)
list15 = [1,2,3,4,5,4,6,4]
print(list15)
list15.remove(4)
print(list15)

# 3.clear()      清除  清除列表中的所有的元素，原列表变为空列表
list16 = [25,36,673]
print(list16)
list16.clear()
print(list16)


# 三、获取
# 直接使用功能：  功能名称(列表)
# 1.len()    length,长度，获取列表的长度或者获取列表中元素的个数
list17 = [425.74,8,58679,7,65,65,64,6]

# 索引的取值范围：0~len(list17) - 1
length = len(list17)
print(length)

# 2.max()  获取列表中的最大值
print(max(list17))

# 3.min() 获取列表中的最小值
print(min(list17))

# 4.index()     索引,从列表中匹配到的第一个指定元素的索引值
# index(元素值)
list18 = [10,20,30,40,50,30,40,50]
inx1 = list18.index(30)
print(inx1)   # 2

inx2 = list18.index(50)
print(inx2)   # 4

# 5.count()   个数，查找指定元素在列表中出现的次数
print(list18.count(50))   #2

# 四、其他用法
# 1.reverse()      反转，将列表中的元素倒序输出
list19 = [10,20,30,40,50]

# 注意;在列表的内部进行反转，并没有生成新的列表
list19.reverse()
print(list19)

# 2.sort()    排序,默认为升序排序   注意：在列表的内部操作
list20 = [34,65,768,23]
# 列表名.sort()
# 升序
# list20.sort()
# 降序
list20.sort(reverse=True)
print(list20)

# 3.sorted()  排序,默认为升序排序   注意：生成一个新的列表
list21 = [34,65,768,23]
# 升序
# list22 = sorted(list21)
# print(list22)
# 降序
list23 = sorted(list21,reverse=True)
print(list23)

# 按照元素的长度来进行排序
list00 = ["abc","hello","g","fhekfgjahgjkq"]
list24 = sorted(list00,key=len)
print(list24)


# 4.拷贝【面试题】
list25 = [23,3,546]
list26 = list25
list26[1] = 100
print(list25)    #[23, 100, 546]
print(list26)    #[23, 100, 546]
print(id(list25))
print(id(list26))

# 浅拷贝：内存的拷贝【实体，堆空间】
list27 = [23,3,546]
list28 = list27.copy()
list28[1] = 200
print(list27)
print(list28)
print(id(list27))
print(id(list28))

# 深拷贝
list1 = [23,3,[4,5]]
list2 = copyright()


